var globalJogadores = new Array();
var globalClubes = new Array();
var globalTargetObject = 'jogador'; //Modifique aqui com o nome da tabela referente a página. uf, jogador etc

function requestListDefault(){
    globalCommunicator.resetParameters();
    globalCommunicator.addParameter('listAll', 'clube');
    globalCommunicator.addParameter('orderBy', 'nome_resumido');
    globalCommunicator.sendRequest(requestListDefault2);
}

function requestListDefault2(response){
    var respostaObj = eval(response);
    var respostaObjLen = respostaObj.length;
    
    for(var i = 0; i < respostaObjLen; i++){
        var clube = new Clube(respostaObj[i][0]);
        clube.assignProperties(respostaObj[i][1], respostaObj[i][2], respostaObj[i][3], respostaObj[i][4]);
        globalClubes[clube.getKey()] = clube;
    }
    
    createComboBox(globalClubes, 'Selecione um clube', 'clube_jogador');
    
    globalCommunicator.resetParameters();
    globalCommunicator.addParameter('listAll', globalTargetObject);
    globalCommunicator.addParameter('orderBy', 'id_clube');
    globalCommunicator.sendRequest(createList);
}

function createElementsObjects(respostaObj){
    var respostaObjLen = respostaObj.length;
   
    var fragment = document.createDocumentFragment();
   
    for(var i = 0; i < respostaObjLen; i++){
        var jogador = new Jogador(respostaObj[i][0]);
        jogador.assignProperties(respostaObj[i][1], respostaObj[i][2], respostaObj[i][3], respostaObj[i][4], respostaObj[i][5]);
        fragment.appendChild(jogador.createItemList(jogador));
        globalJogadores[jogador.getKey()] = jogador;
    }
   
    return fragment;
}

function getSelectedObject(key){
    return globalJogadores[key];
}

function fillFields(obj){
    document.getElementById('nome_jogador').value = obj.nomeCompleto;
    document.getElementById('apelido_jogador').value = obj.nome;
    //quebrar a string com split e usar a função 'selectComboItem' passando o id do el dia mes e ano
    document.getElementById('data_nascimento_jogador').value = obj.dataNascimento;
    
    var checked = false;
    if(obj.transferido == 1) checked = true;
    document.getElementById('transferido_jogador').checked = checked;
    
    selectComboItem('clube_jogador', obj.clube);
}

function deleteItem(){
    if(globalSelectedItem != null){
        if(confirm('Você tem certeza que deseja apagar o item '+globalSelectedItem.name+' ?')){        
            globalCommunicator.resetParameters();
            globalCommunicator.addParameter('delete', globalTargetObject);
            globalCommunicator.addParameter('id', globalSelectedItem.id);
            globalCommunicator.sendRequest(doChangeHandler);
           
            clearFields();
        }
    }else alert('Deve haver um item selecionado');
}


function saveEditedItem(){
    var communicator = new Communicator();        
    var fields = new Array();
    fields['nome'] = document.getElementById('nome_jogador').value;
    fields['apelido'] = document.getElementById('apelido_jogador').value;
    //fields['data_nascimento'] = document.getElementById('data_nascimento_jogador').value;
    fields['id_clube'] = document.getElementById('clube_jogador').value;
    
    var transferido = (document.getElementById('transferido_jogador').checked) ? 1 : 0;
    fields['transferido'] = transferido;

    var fieldAssigned = validateAssignFields(communicator, fields, globalSelectedItem);

    if(globalValidationFailed.length == 0){
        if(fieldAssigned){
            communicator.addParameter('update', globalTargetObject);
            communicator.addParameter('id', globalSelectedItem.id);
            communicator.sendRequest(doChangeHandler);   
        }else alert('Nenhuma modificação foi feita');
    }else alert('A validação falhou nos seguintes itens: '+globalValidationFailed.join(', '));
}

function saveNewItem(){    
    var communicator = new Communicator();        
    var fields = new Array();
    fields['nome'] = document.getElementById('nome_jogador').value;
    fields['apelido'] = document.getElementById('apelido_jogador').value;
    //fields['data_nascimento'] = document.getElementById('data_nascimento_jogador').value;
    fields['id_clube'] = document.getElementById('clube_jogador').value;

    var transferido = (document.getElementById('transferido_jogador').checked) ? 1 : 0;
    fields['transferido'] = transferido;

    var fieldAssigned = validateAssignFields(communicator, fields, globalSelectedItem);
   
    if(globalValidationFailed.length == 0){
        if(fieldAssigned){
            communicator.addParameter('insert', globalTargetObject);
            communicator.sendRequest(doChangeHandler);
        }
    }else alert('A validação falhou nos seguintes itens: '+globalValidationFailed.join(', '));
}


// função antiga
/*function saveEditedItem(){
    var name = document.getElementById('nome_jogador').value;
    if(globalSelectedItem.name != name){
        globalCommunicator.resetParameters();
        globalCommunicator.addParameter('update', globalTargetObject);
        globalCommunicator.addParameter('nome', name);
        globalCommunicator.addParameter('id', globalSelectedItem.id);
        globalCommunicator.sendRequest(doChangeHandler);
    }else alert('Nenhuma modificação foi feita');
} */ 

//função antiga


/*function saveNewItem(){  
    var name = document.getElementById('nome_jogador').value;
   
    globalCommunicator.resetParameters();
    globalCommunicator.addParameter('insert', globalTargetObject);
    globalCommunicator.addParameter('nome', name);
    globalCommunicator.sendRequest(doChangeHandler);
}*/


function validateFields(field, value){
    var feedback = false;
    
    if(field == 'nome'){
        if(!validateNome(value)) feedback = 'Nome';
    }
    
    if(field == 'apelido'){
        if(!validateNome(value)) feedback = 'Apelido';
    }
    
    if(field == 'data_nascimento_jogador'){
        if(!validateDataNascimento(value)) feedback = 'data_nascimento_jogador';
    }
    
    if(field == 'id_clube'){
        if(!isNumeric(value)) feedback = 'Clube ';
    }
    
    if(field == 'transferido'){
        if(!validateTransferido(value)) feedback = 'Transferido';
    }
    
    return feedback;
}

function validateTransferido(value){
    if(value != 0 && value != 1) return false;
    return true;
}


function validateNome(value){
    if(!isString(value)) return false;
    return true;
}


function validateApelido(value){
    if((value != null) || (value.length > 45) || (!isString(value))){
        return false;
    }
    return true;
}

function validateDataNascimento(value){
    if( (value != null) || (!validateNullDate(value))){
        return false;
    }
    return true;
}

function newItemTasks(){}

function validateTransferido(value){
    if(value.length != 1 || isNumeric(value.charAt(0))){
        return false;
    }
    return true;
}

function focusFirstField(){
    document.getElementById('fields').getElementsByTagName('input')[0].focus();
}

function makeEarlyTasks(){
    var yearsArray = createArrayPastYears(30, 15);
    createComboDays('dia_nascimento_jogador');
    createComboMonths('mes_nascimento_jogador');
    createComboBox(yearsArray, 'Selecione o ano', 'ano_nascimento_jogador');
}

function makeLateTasks(){}

function clearSpecificElements(){}


/*
function Jogador (id, nome){
    this.id = id;
    this.nome = nome;    
}

Jogador.prototype.createItemList = function(uf){
    var itemList = document.createElement('DIV');
    itemList.className = 'list_item';
    itemList.setAttribute('DATA-KEY', Jogador.getKey());
    itemList.addEventListener('click', selectItem, true);
   
    //função modificada de estado. nãos ei se está tudo certo
    var nomeInfo = document.createElement('P');
    nomeInfo.className = 'info';
    nomeInfo.appendChild(document.createTextNode(uf.name));
   
    itemList.appendChild(nomeInfo);
   
    return itemList;
}


Orientação a Objetos em Javascript é muito diferente das demais linguagens.
Declare o construtor como function NomeDaClasse(param1, param2){...}
Declare os métodos como NomeDaClasse.prototype.nomeDoMetodo = function(params){}
*/


/*   Código antigo
function Jogador(id,nome,apelido,data_nascimento,id_clube,transferido){
    this.id = id;
    this.nome = nome;
    this.apelido =  apelido;
    this.data_nascimento = nascimento;
    this.id_clube = clube ;
    this.transferido = transferido;
}


Jogador.prototype.getKey = function(){
    return "jogador_"+this.id;
}
*/